package paquetes.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import paquetes.enums.TipoFragilidad;
import paquetes.enums.TipoPeligrosidad;
import paquetes.manager.AdministradorPedido;
import paquetes.negocioVO.*;

public class ControladorPedido extends HttpServlet {

	private static final long serialVersionUID = 1087702007634924546L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            String action = request.getParameter("action");
            String jspPage = "/index.jsp";

            if(request.getParameter("cancelar4")!=null)
            {
            	action ="default";
            }
  
            
            if ((action == null) || (action.length() < 1))
            {
                action = "default";
            }

            if ("default".equals(action))
            {
                jspPage = "/index.jsp";
            }else if("AltaProducto".equals(action)){
            	
            jspPage = "jsp/Producto/Alta.jsp";
            	
            }
            else if ("altaDeProducto".equals(action))
            {
            	
            	
            	String descripcion = request.getParameter("descripcion");
        		int dimensionX = Integer.valueOf(request.getParameter("dimensionX"));
        		int dimensionY = Integer.valueOf(request.getParameter("dimensionY"));
        		int dimensionZ = Integer.valueOf(request.getParameter("dimensionZ"));
        		String fragilidad = request.getParameter("fragilidad");
        		String  peligrosidad = request.getParameter("peligrosidad");
        		int refrigeracion = Integer.valueOf(request.getParameter("refrigeracion"));
        		int apilable = Integer.valueOf(request.getParameter("apilable"));
        		
        		 AdministradorPedido.getInstancia().AltaDeProducto(descripcion,dimensionX,dimensionY,dimensionZ,fragilidad,peligrosidad,refrigeracion,apilable);
  
				
            }
            
            else if ("listarProductos".equals(action))
            {
            	List<ProductoVO> productos = new ArrayList<ProductoVO>();
            	productos = AdministradorPedido.getInstancia().obtenerProductos();
				request.setAttribute("productos", productos);
                jspPage = "jsp/Producto/MostrarLista.jsp";
     
            }
            
            else if ("displayProducto".equals(action))
            {
            	int id = Integer.valueOf(request.getParameter("id"));
                ProductoVO p = AdministradorPedido.getInstancia().obtenerProducto(id); 
				request.setAttribute("producto", p);
                jspPage = "jsp/Producto/Mostrar.jsp";
            }
            
            else if ("edicion".equals(action))
            {
                jspPage = "jsp/Producto/SolicitarDescripcion.jsp";
            }
            else if ("edit".equals(action))
            {

            	String descripcion = request.getParameter("descripcion");
        		int dimensionX = Integer.valueOf(request.getParameter("dimensionx"));
        		int dimensionY = Integer.valueOf(request.getParameter("dimensionY"));
        		int dimensionZ = Integer.valueOf(request.getParameter("dimensionZ"));
        		int fragilidad = Integer.valueOf(request.getParameter("fragilidad"));
        		int  peligrosidad = Integer.valueOf(request.getParameter(" peligrosidad"));
        		int refrigeracion = Integer.valueOf(request.getParameter("refrigeracion"));
        		int apilable = Integer.valueOf(request.getParameter("apilable"));
        		
        		
        		 AdministradorPedido.getInstancia().actualizarProducto(descripcion,dimensionX,dimensionY,dimensionZ,fragilidad,peligrosidad,refrigeracion,apilable);
             	                       
            }
            
            else if ("baja".equals(action))
            {
            	Integer id = Integer.valueOf(request.getParameter("id"));
            	AdministradorPedido.getInstancia().bajaProducto(id);
            	
            }
            else if("AltaReceptor".equals(action)){
            	
                jspPage = "jsp/ReceptorAutorizado/Alta.jsp";
                	
                }
            
            else if ("AltaReceptorAutorizado".equals(action))
            {
            	String nombre = request.getParameter("nombre");
            	String apellido = request.getParameter("apellido");
            	String documento = request.getParameter("documento");
            	
            	AdministradorPedido.getInstancia().AltaDeReceptor(nombre,apellido,documento);
  
            	
            } 
            else if ("listarReceptores".equals(action))
            {
            	List<ReceptorAutorizadoVO> receptores = new ArrayList<ReceptorAutorizadoVO>();
            	receptores = AdministradorPedido.getInstancia().obtenerReceptores();
				request.setAttribute("receptores", receptores);
                jspPage = "jsp/ReceptorAutorizado/MostrarLista.jsp";
     
            }
            
            else if ("displayReceptor".equals(action))
            {
            	int id = Integer.valueOf(request.getParameter("id"));
                ReceptorAutorizadoVO receptor = AdministradorPedido.getInstancia().obtenerReceptor(id); 
				request.setAttribute("receptor", receptor);
                jspPage = "jsp/ReceptorAutorizado/Mostrar.jsp";
            }
             else if("AltaServicioAdicional".equals(action)){
            	
                jspPage = "jsp/ServicioAdicional/Alta.jsp";
                	
                }
            
            else if ("AltaDeServicioAdicional".equals(action))
            {
            	String descripcion = request.getParameter("descripcion");
            	
            	AdministradorPedido.getInstancia().AltaDeServicioAdicional(descripcion);
  
            	
            } 
            else if ("ListarServiciosAdicionales".equals(action))
            {
            	List<ServicioAdicionalVO> servicios = new ArrayList<ServicioAdicionalVO>();
            	servicios = AdministradorPedido.getInstancia().obtenerServicios();
				request.setAttribute("servicios", servicios);
                jspPage = "jsp/ServicioAdicional/MostrarLista.jsp";
     
            }
            
            else if ("displayServicio".equals(action))
            {
            	int id = Integer.valueOf(request.getParameter("id"));
            	ServicioAdicionalVO servicio = AdministradorPedido.getInstancia().obtenerServicio(id); 
				request.setAttribute("servicio", servicio);
                jspPage = "jsp/ServicioAdicional/Mostrar.jsp";
            }
            
            
            else if("altaManifiesto".equals(action)){
            	
                jspPage = "jsp/Manifiesto/Alta.jsp";
                	
                }
            
            else if ("AltaDeManifiesto".equals(action))
            {
            	
            	byte[] escaneo = request.getParameter("escaneo").getBytes();
            	String tipoFragilidad = request.getParameter("tipoFragilidad");
            	String tipoPeligrosidad = request.getParameter("tipoPeligrosidad");
            	int dimensionX = Integer.valueOf(request.getParameter("dimensionX"));
            	int dimensionY = Integer.valueOf(request.getParameter("dimensionY"));
            	int dimensionZ = Integer.valueOf(request.getParameter("dimensionZ"));
            	int refrigeracion = Integer.valueOf(request.getParameter("refrigeracion"));
            	String indicaciones = request.getParameter("indicaciones");
            	 
            	
            	AdministradorPedido.getInstancia().AltaDeManifiesto(escaneo,tipoFragilidad,tipoPeligrosidad,dimensionX,dimensionY,dimensionZ,refrigeracion,indicaciones);
  
            	
            } 
            dispatch(jspPage, request, response);
        }
    
        protected void dispatch(String jsp, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            if (jsp != null)
            {
                RequestDispatcher rd = request.getRequestDispatcher(jsp);
                rd.forward(request, response);
            }
        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
        	System.out.println(request.toString());
            doPost(request, response);
        }
}

